package kr.pe.johnkim.pushchat.mobile.dao;

import kr.pe.johnkim.pushchat.mobile.domain.PushChatMember;

import java.util.List;

/**
 * @author : John_Kim <cale9797@gmail.com>
 * @date : 13. 6. 12.
 */
public interface PushChatMemberDao {

    /**
     * 멤버 아이디 중복 확인을 한다.
     *
     * @param pushChatMember
     * @return
     */
    public PushChatMember selectDuplicationMember(PushChatMember pushChatMember);

    /**
     * 멤버를 등록 한다.
     *
     * @param pushChatMember
     */
    public void registerMember(PushChatMember pushChatMember);

    /**
     * 멤버 로그인을 한다.
     *
     * @param pushChatMember
     * @return
     */
    public PushChatMember login(PushChatMember pushChatMember);

    /**
     * 멤버 목록을 가져 온다.
     *
     * @param pushChatMember
     * @return
     */
    public List<PushChatMember> selectMemberList(PushChatMember pushChatMember);

    /**
     * 사용자의 GCM / APNS Device Token 을 업데이트 한다.
     *
     * @param pushChatMember
     */
    public void updateRegistrationId(PushChatMember pushChatMember);

    /**
     * 멤버 정보를 가져 온다.
     *
     * @param pushChatMember
     * @return
     */
    public PushChatMember selectMemberInformation(PushChatMember pushChatMember);

    /**
     * 멤버를 검색 한다.
     *
     * @param pushChatMember
     * @return
     */
    public List<PushChatMember> selectSearchMemberList(PushChatMember pushChatMember);

    /**
     * 비밀 번호를 수정 한다.
     *
     * @param pushChatMember
     */
    public void updatePassword(PushChatMember pushChatMember);

    /**
     * 멤버 일반 정보를 수정 한다.
     *
     * @param pushChatMember
     */
    public void updateMemberInformation(PushChatMember pushChatMember);

    /**
     * 닉네임 중복 확인을 한다.
     *
     * @param pushChatMember
     * @return
     */
    public PushChatMember selectDuplicationNickName(PushChatMember pushChatMember);
}
